package main

import (
	"container/ring"
	"fmt"
)

func main() {
	//Unlink 从环 r 中删除 n % r.Len() 元素，从 r.Next() 开始。 如果 n % r.Len() == 0，则 r 保持不变。 结果是移除的子环。 r 不能为空。

	r := ring.New(5)
	n := r.Len()
	for i := 0; i < n; i++ {
		r.Value = i
		r = r.Next()
	}

	r.Do(func(i interface{}) {
		fmt.Println(i)
	})

	fmt.Println("=======================")
	// Unlink three elements from r, starting from r.Next()
	r.Unlink(3)

	// Iterate through the remaining ring and print its contents
	r.Do(func(p interface{}) {
		fmt.Println(p.(int))
	})
	//0
	//1
	//2
	//3
	//4
	//=======================
	//0
	//4
}
